﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using Campeonato.Model;
using Campeonato.Common.BLL;

namespace PESWeb.Pages.Controls
{
    public partial class RankingGridView : System.Web.UI.UserControl
    {
        private short m_numTimesClassificados = -1;
        private short m_numTimesRebaixados = -1;
        private int m_numJogadores = -1;
        private string m_grupoAtual = "";
        private Color m_currentBackColor = Color.Empty;
        private Color m_currentForeColor = Color.Empty;
        private int m_currentIndex = 0;

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public void LoadRanking(Campeonato.Model.Campeonato _campeonato, int? turno)
        {
            m_numTimesClassificados = (short)_campeonato.QtdeTimesClassificadosFinais;
            m_numTimesRebaixados = (short)_campeonato.QtdeTimesRebaixados;
            if (!turno.HasValue || turno.Value <= 0)
            {
                IList<Jogador> lstJogadores = CampeonatoBLL.BuscarRankingCampeonato(_campeonato);
                if (lstJogadores != null && lstJogadores.Count > 0)
                {
                    this.gvRanking.DataSource = lstJogadores;
                    m_numJogadores = lstJogadores.Count;
                    this.gvRanking.DataBind();
                }
            }
            else if(turno.Value > 0 && turno.Value < 3)
            {
                IList<Jogador> lstJogadores = CampeonatoBLL.BuscarRankingCampeonatoPorTurno(_campeonato, turno.Value);
                if (lstJogadores != null && lstJogadores.Count > 0)
                {
                    this.gvRanking.DataSource = lstJogadores;
                    m_numJogadores = lstJogadores.Count;
                    this.gvRanking.DataBind();
                }
            }
        }

        protected void RankingGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            var jogador = e.Row.DataItem as Jogador;

            if (jogador != null && !string.IsNullOrEmpty(jogador.Grupo))
            {
                if (string.IsNullOrEmpty(m_grupoAtual) ||
                    (!string.IsNullOrEmpty(jogador.Grupo) && jogador.Grupo != m_grupoAtual))
                {
                    m_grupoAtual = jogador.Grupo;

                    if (m_currentBackColor == Color.LightGreen)
                    {
                        m_currentBackColor = Color.LightCoral;
                        m_currentForeColor = Color.White;
                        m_currentIndex = 0;
                    }
                    else
                    {
                        m_currentBackColor = Color.LightGreen;
                        m_currentForeColor = Color.Black;
                        m_currentIndex = 0;
                    }
                }

                e.Row.Cells[0].BackColor = m_currentBackColor;
                e.Row.Cells[0].ForeColor = m_currentForeColor;
            }

            if (e.Row != null && e.Row.RowIndex >= 0)
            {
                e.Row.Cells[0].Text = Convert.ToString(++m_currentIndex);

                if (e.Row.RowIndex < m_numTimesClassificados && m_numTimesClassificados > 0)
                {
                    e.Row.BackColor = Color.DarkGreen;
                }

                if (e.Row.RowIndex >= (m_numJogadores - m_numTimesRebaixados) && m_numTimesRebaixados > 0)
                {
                    e.Row.BackColor = Color.Red;
                }
            }
        }
    }
}